/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * Copyright (c) Swan & The Quaver Team <support@quavergame.com>.
*/

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework.Graphics;
using Wobble;
using Wobble.Assets;
using Wobble.Managers;

namespace Quaver.Shared.Assets
{
    public static class FontAwesome
    {
        /// <summary>
        ///     Stores all of the font awesome icons.
        /// </summary>
        private static Dictionary<FontAwesomeIcon, Texture2D> Icons { get; } = new Dictionary<FontAwesomeIcon, Texture2D>();

        /// <summary>
        ///     Gets a FontAwesome icon texture.
        /// </summary>
        /// <param name="icon"></param>
        /// <returns></returns>
        public static Texture2D Get(FontAwesomeIcon icon)
        {
            var name = icon.ToString().Replace("_", "-");
            name += ".png";

            return TextureManager.Load($"Quaver.Resources/Textures/FontAwesome/{name}");
        }
    }

    /// <summary>
    ///     Contains all the font awesome icons.
    /// </summary>
    public enum FontAwesomeIcon
    {
        fa_add_square_button,
        fa_adjust_contrast,
        fa_align_justify,
        fa_align_to_left,
        fa_align_to_right,
        fa_ambulance,
        fa_anchor_shape,
        fa_android_character_symbol,
        fa_angle_arrow_down,
        fa_angle_arrow_pointing_to_right,
        fa_angle_pointing_to_left,
        fa_apple_logo,
        fa_archive_black_box,
        fa_arrow_angle_pointing_down,
        fa_arrow_down_on_black_circular_background,
        fa_arrow_pointing_down,
        fa_arrow_pointing_right_in_a_circle,
        fa_arrow_pointing_to_left,
        fa_arrow_pointing_to_right,
        fa_arrow_up_on_a_black_circle_background,
        fa_arrow_up,
        fa_arrowhead_pointing_to_the_right,
        fa_arrowhead_pointing_up_inside_a_square_box_outline,
        fa_arrowheads_pointing_to_the_left,
        fa_asterisk,
        fa_ban_circle_symbol,
        fa_bar_graph_on_a_rectangle,
        fa_barcode,
        fa_beaker,
        fa_beer_jar_black_silhouette,
        fa_bell_musical_tool,
        fa_bitbucket_logotype_camera_lens_in_perspective,
        fa_bitbucket_sign,
        fa_bitcoin_logo,
        fa_blank_file,
        fa_bold_text_option,
        fa_book,
        fa_bookmark_black_shape,
        fa_bookmark_white,
        fa_branch_with_leaves_black_shape,
        fa_briefcase,
        fa_bug,
        fa_building_front,
        fa_bull_horn_announcer,
        fa_bullseye,
        fa_calendar_page_empty,
        fa_calendar_with_spring_binder_and_date_blocks,
        fa_camera_retro,
        fa_caret_arrow_up,
        fa_caret_down,
        fa_center_text_alignment,
        fa_certificate_shape,
        fa_check_box_empty,
        fa_check_mark,
        fa_check_sign_in_a_rounded_black_square,
        fa_check,
        fa_checked_symbol,
        fa_checkered_raised_flag,
        fa_chevron_arrow_down,
        fa_chevron_arrow_up,
        fa_chevron_pointing_to_the_left,
        fa_chevron_sign_down,
        fa_chevron_sign_left,
        fa_chevron_sign_to_right,
        fa_chevron_up,
        fa_circle_shape_outline,
        fa_circle_with_an_arrow_pointing_to_left,
        fa_circle,
        fa_circular_shape_silhouette,
        fa_cloud_storage_download,
        fa_cloud_storage_uploading_option,
        fa_cocktail_glass,
        fa_code_fork_symbol,
        fa_code,
        fa_coffee_cup_on_a_plate_black_silhouettes,
        fa_cog_wheel_silhouette,
        fa_collapse_window_option,
        fa_comment_black_oval_bubble_shape,
        fa_comment_white_oval_bubble,
        fa_comments,
        fa_compass_circular_variant,
        fa_computer_tablet,
        fa_copy_document,
        fa_correct_symbol,
        fa_couple_of_arrows_changing_places,
        fa_credit_card,
        fa_crop_symbol,
        fa_cross_mark_on_a_black_circle_background,
        fa_crown,
        fa_css_3_logo,
        fa_cursor,
        fa_cut,
        fa_dashboard,
        fa_delivery_truck_silhouette,
        fa_desktop_monitor,
        fa_discord,
        fa_dollar_symbol,
        fa_dot_and_circle,
        fa_double_angle_pointing_to_right,
        fa_double_left_chevron,
        fa_double_sided_eraser,
        fa_double_strikethrough_option,
        fa_down_arrow,
        fa_download_symbol,
        fa_download_to_storage_drive,
        fa_dribbble_logo,
        fa_dropbox_logo,
        fa_earth_globe,
        fa_edit_interface_sign,
        fa_eject_symbol,
        fa_envelope_of_white_paper,
        fa_envelope,
        fa_euro_currency_symbol,
        fa_exchange_arrows,
        fa_exclamation_sign,
        fa_exclamation,
        fa_external_link_square_with_an_arrow_in_right_diagonal,
        fa_external_link_symbol,
        fa_eye_open,
        fa_eye_with_a_diagonal_line_interface_symbol_for_invisibility,
        fa_facebook_logo_1,
        fa_facebook_logo,
        fa_facetime_button,
        fa_fast_forward_arrows,
        fa_female_silhouette,
        fa_fighter_jet_silhouette,
        fa_file,
        fa_film_strip_with_two_photograms,
        fa_filter_tool_black_shape,
        fa_finger_of_a_hand_pointing_to_right_direction,
        fa_fire_extinguisher,
        fa_fire_symbol,
        fa_flag_black_shape,
        fa_flickr_website_logo_silhouette,
        fa_fluffy_cloud_silhouette,
        fa_folder_closed_black_shape,
        fa_folder_white_shape,
        fa_font_selection_editor,
        fa_font_symbol_of_letter_a,
        fa_fork_and_knife_silhouette,
        fa_forward_button,
        fa_four_black_squares,
        fa_foursquare_button,
        fa_frown,
        fa_fullscreen_symbol,
        fa_gamepad_console,
        fa_gift_box,
        fa_github_character,
        fa_github_logo,
        fa_github_sign,
        fa_gittip_website_logo,
        fa_google_plus_symbol_1,
        fa_google_plus_symbol,
        fa_great_britain_pound,
        fa_group_profile_users,
        fa_half_star_shape,
        fa_hand_finger_pointing_down,
        fa_hand_pointing_to_left_direction,
        fa_hand_pointing_upward,
        fa_hard_drive,
        fa_heart_shape_outline,
        fa_heart_shape_silhouette,
        fa_home,
        fa_horizontal_resize_option,
        fa_hostpital_building,
        fa_hotel_letter_h_sign_inside_a_black_rounded_square,
        fa_html_5_logo,
        fa_inbox,
        fa_increase_size_option,
        fa_indent_right,
        fa_information_button,
        fa_information_symbol,
        fa_instagram_symbol,
        fa_italicize_text,
        fa_keyboard,
        fa_left_arrow_1,
        fa_left_arrow,
        fa_left_indentation_option,
        fa_legal_hammer,
        fa_lemon,
        fa_leter_a_inside_a_black_circle,
        fa_letter_p_symbol,
        fa_level_up,
        fa_light_bulb,
        fa_lightning_bolt_shadow,
        fa_link_symbol,
        fa_linkedin_letters,
        fa_linkedin_sign,
        fa_linux_logo,
        fa_list_on_window,
        fa_list_with_dots,
        fa_list,
        fa_listing_option,
        fa_long_arrow_pointing_to_left,
        fa_long_arrow_pointing_to_the_right,
        fa_long_arrow_pointing_up,
        fa_magic_wand,
        fa_magnifying_glass,
        fa_man,
        fa_map_marker,
        fa_maxcdn_website_logo,
        fa_medical_kit,
        fa_meh_face_emoticon,
        fa_microphone_black_shape,
        fa_microphone_off,
        fa_minus_button,
        fa_minus_sign_inside_a_black_circle,
        fa_minus_sign_inside_a_black_rounded_square_shape,
        fa_minus_sign_on_a_square_outline,
        fa_minus_symbol,
        fa_mobile_phone,
        fa_moon_phase_outline,
        fa_move_option,
        fa_music_headphones,
        fa_music_note_black_symbol,
        fa_musical_bell_outline,
        fa_nine_black_tiles,
        fa_numbered_list,
        fa_open_folder_outline,
        fa_open_folder,
        fa_open_laptop_computer,
        fa_open_padlock_silhouette,
        fa_open_wrench_tool_silhouette,
        fa_padlock_unlock,
        fa_padlock,
        fa_paper_bill,
        fa_paper_clip_outline,
        fa_paper_push_pin,
        fa_paste_from_clipboard,
        fa_pause_symbol,
        fa_pencil,
        fa_photo_camera,
        fa_picture,
        fa_pinterest_logo,
        fa_pinterest_sign,
        fa_plane,
        fa_plant_leaf_with_white_details,
        fa_play_button,
        fa_play_circle,
        fa_play_sign,
        fa_play_video_button,
        fa_plus_black_symbol,
        fa_plus_sign_in_a_black_circle,
        fa_plus_symbol_in_a_rounded_black_square,
        fa_power_button_off,
        fa_printing_tool,
        fa_puzzle_piece_silhouette,
        fa_qr_code,
        fa_question_mark_on_a_circular_black_background,
        fa_question_sign,
        fa_quote_left,
        fa_reduced_volume,
        fa_refresh_arrow,
        fa_refresh_page_option,
        fa_remove_button,
        fa_remove_symbol,
        fa_renren_social_network_of_china_logotype,
        fa_reorder_option,
        fa_reply_arrow,
        fa_reply,
        fa_resize_option,
        fa_retweet_arrows_symbol,
        fa_rewind_button,
        fa_right_arrow_in_a_circle,
        fa_right_chevron,
        fa_right_quotation_mark,
        fa_road_perspective,
        fa_rounded_black_square_shape,
        fa_rss_feed_button,
        fa_rss_symbol,
        fa_rupee_indian,
        fa_save_file_option,
        fa_screenshot,
        fa_settings,
        fa_share_option,
        fa_share_post_symbol,
        fa_share_symbol,
        fa_shield,
        fa_shopping_cart_black_shape,
        fa_sign_in,
        fa_sign_out_option,
        fa_signal_bars,
        fa_sitemap,
        fa_skype_logo,
        fa_small_rocket_ship_silhouette,
        fa_smile,
        fa_sort_arrows_couple_pointing_up_and_down,
        fa_sort_by_alphabet,
        fa_sort_by_attributes_interface_button_option,
        fa_sort_by_attributes,
        fa_sort_by_numeric_order,
        fa_sort_by_order,
        fa_sort_down,
        fa_sort_reverse_alphabetical_order,
        fa_sort_up,
        fa_speech_bubbles_comment_option,
        fa_spinner_of_dots,
        fa_square_shape_shadow,
        fa_stack_exchange_logo,
        fa_stack_exchange_symbol,
        fa_star_1,
        fa_star_half_empty,
        fa_star,
        fa_step_backward,
        fa_step_forward,
        fa_stethoscope,
        fa_strikethrough,
        fa_suitcase_with_white_details,
        fa_sun,
        fa_superscript_text_formatting,
        fa_table_grid,
        fa_tag_black_shape,
        fa_tags,
        fa_tasks_list,
        fa_telephone_handle_silhouette,
        fa_telephone_symbol_button,
        fa_terminal,
        fa_text_file_1,
        fa_text_file,
        fa_text_height_adjustment,
        fa_text_width,
        fa_thin_arrowheads_pointing_down,
        fa_three_small_square_shapes,
        fa_thumb_down,
        fa_thumbs_down_silhouette,
        fa_thumbs_up_hand_symbol,
        fa_thumbs_up,
        fa_ticket,
        fa_time,
        fa_times,
        fa_tint_drop,
        fa_trash,
        fa_trello_website_logo,
        fa_trophy,
        fa_tumblr_logo_1,
        fa_tumblr_logo,
        fa_turkish_lire_symbol,
        fa_twitter_black_shape,
        fa_twitter_sign,
        fa_two_columns_layout,
        fa_u_shaped_thick_magnet,
        fa_umbrella_black_silhouette,
        fa_underline_text_option,
        fa_undo_arrow,
        fa_unlink_symbol,
        fa_up_arrow,
        fa_up_chevron_button,
        fa_upload_button,
        fa_upload,
        fa_user_md_symbol,
        fa_user_shape,
        fa_vertical_ellipsis,
        fa_vertical_resizing_option,
        fa_video_play_square_button,
        fa_vimeo_square_logo,
        fa_vintage_key_outline,
        fa_vk_social_network_logo,
        fa_volume_off,
        fa_volume_up_interface_symbol,
        fa_warning_sign_on_a_triangular_background,
        fa_weibo_website_logo,
        fa_wheelchair,
        fa_white_flag_symbol,
        fa_windows_logo_silhouette,
        fa_x2_symbol_of_a_letter_and_a_number_subscript,
        fa_xing_logo,
        fa_xing_logotype,
        fa_yen_symbol,
        fa_youtube_logo_1,
        fa_youtube_logo_2,
        fa_youtube_logo,
        fa_zoom_in,
        fa_zoom_out
    }
}
